package com.payment.system.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.payment.common.annotation.DataSource;
import com.payment.common.enums.DataSourceType;
import com.payment.system.domain.MerchantMonth;
import com.payment.system.vo.DayMonthVo;

/**
 * 月统计 数据层
 * 
 * @author payment
 * @date 2019-03-07
 */
public interface MerchantMonthMapper 
{
	/**
     * 查询月统计信息
     * 
     * @param id 月统计ID
     * @return 月统计信息
     */
	@DataSource(DataSourceType.SLAVE)
	public MerchantMonth selectMerchantMonthById(Long id);
	
	/**
     * 查询月统计列表
     * 
     * @param merchantMonth 月统计信息
     * @return 月统计集合
     */
	@DataSource(DataSourceType.SLAVE)
	public List<MerchantMonth> selectMerchantMonthList(MerchantMonth merchantMonth);
	
	/**
     * 新增月统计
     * 
     * @param merchantMonth 月统计信息
     * @return 结果
     */
	public int insertMerchantMonth(MerchantMonth merchantMonth);
	
	/**
     * 修改月统计
     * 
     * @param merchantMonth 月统计信息
     * @return 结果
     */
	public int updateMerchantMonth(MerchantMonth merchantMonth);
	
	/**
     * 删除月统计
     * 
     * @param id 月统计ID
     * @return 结果
     */
	public int deleteMerchantMonthById(Long id);
	
	/**
     * 批量删除月统计
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteMerchantMonthByIds(String[] ids);
	
	//月维度
	@DataSource(DataSourceType.SLAVE)
	MerchantMonth selectMerchantDayByIdAndDate(@Param("merchantId") String merchantId,@Param("dateTime") String dateTime);

	@DataSource(DataSourceType.SLAVE)
	public List<MerchantMonth> selectMerchantListByTime(@Param("merchantId")String merchantId,@Param("startTime") String startTime, @Param("endTime")String endTime);


	/**
	 * 查询月统计表（上月收益）
	 * @param id
	 * @param time
	 * @return
	 */
	@DataSource(DataSourceType.SLAVE)
	public MerchantMonth selectMerchantMonthByMerchantIdAndTime(@Param("id")String id,@Param("time") String time);

	/**
	 * 我的交易  月
	 * @param num
	 * @param size
	 * @param merchantId
	 * @return
	 */
	@DataSource(DataSourceType.SLAVE)
    List<DayMonthVo> selectMerchantMonthListByMerchantId(@Param("num") int num,@Param("size") Integer size, @Param("merchantId") String merchantId);

    //报表统计半年
	@DataSource(DataSourceType.SLAVE)
	List<Map<String, Object>> selectReportFormTotal(@Param("merchantId") String merchantId);

	public void deleteMerchantMonthByTime(@Param("time")String time);
}